/**
 * 默认绑定（独立函数调用时使用默认绑定规则）
 * 独立的函数调用可以理解成函数没有被绑定到某个对象上进行调用
 * 此时this指向的是全局对象，对浏览器来说就是window
 */

//案例1
function foo() {
  console.log('===案例1===', this)
}

foo()

//案例2
function foo1() {
  console.log('===案例2===', this)
}

function foo2() {
  console.log('===案例2===', this)
  foo1()
}

function foo3() {
  console.log('===案例2===', this)
  foo2()
}

foo3()

//案例3
var obj = {
  name: 'kobe',
  foo: function () {
    console.log('===案例3===', this)
  }
}
var bar = obj.foo
bar()

//案例4
function foo4(fn) {
  fn()
}

var obj1 = {
  name: 'lilei',
  foo: function () {
    console.log('===案例4===', this)
  }
}
foo4(obj1.foo)
